package com.itaem.community.modules.infrastructure.company.department.service;

import com.itaem.community.modules.infrastructure.company.department.dto.*;
import com.itaem.community.modules.infrastructure.company.department.entity.DepartmentEntity;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 物业部门 服务类
 * </p>
 *
 * @author tomato
 * @since 2020-10-28
 */
public interface DepartmentService extends IService<DepartmentEntity> {

    /**
     * 根据上传的信息创建部门
     *
     * @param createDto 创建信息
     * @return 创建结果
     */
    Boolean saveDepartment(DepartmentCreateDTO createDto);

    /**
     * 根据id获取部门信息（包括其下员工的信息）
     *
     * @param id 要获取的部门id
     * @return 部门信息
     */
    DepartmentDTO findDepartmentById(Integer id);

    /**
     * 根据id查询员工的信息
     *
     * @param id 员工id
     * @return 员工信息
     */
    WorkerDTO findWorker(Integer id);

    /**
     * 雇佣员工
     *
     * @param hireDto 要雇佣员工信息
     * @return 雇佣结果
     */
    Boolean addWorker(WorkerHireDTO hireDto);

    /**
     * 根据上传的信息解雇员工
     *
     * @param fireDto 要解雇的员工信息
     * @return 解雇结果
     */
    Boolean removeWorker(WorkerFireDTO fireDto);

    /**
     * 删除部门信息
     *
     * @param departmentId 部门id
     * @return 删除结果
     */
    Boolean removeDepartmentById(Integer departmentId);
}
